package com.r2coding.domain.strategy.model.valobj;

import com.r2coding.domain.strategy.service.rule.factory.DefaultLogicFactory;
import com.r2coding.types.common.Constants;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.Arrays;

/**
 * @author caolx
 * @description 抽奖策略规则规则值对象
 * @date 2025/8/4 10:08
 */
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StrategyAwardRuleModelVO {

    private String ruleModels;

    /**
     * 获取奖品【抽奖中】规则模型
     *
     * @return 奖品【抽奖中】规则模型
     */
    public String[] raffleCenterRuleModels() {
        return Arrays.stream(ruleModels.split(Constants.SPLIT))
                .filter(DefaultLogicFactory.LogicModel::isCenter)
                .toArray(String[]::new);
    }

    /**
     * 获取奖品【抽奖后】规则模型
     *
     * @return 奖品【抽奖后】规则模型
     */
    public String[] raffleAfterRuleModels() {
        return Arrays.stream(ruleModels.split(Constants.SPLIT))
                .filter(DefaultLogicFactory.LogicModel::isAfter)
                .toArray(String[]::new);

    }
}
